const pages = require('./config/pages');
const CompressionWebpackPlugin = require('compression-webpack-plugin');
// const vConsolePlugin = require('vconsole-webpack-plugin');
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

module.exports = {
  publicPath: './',
  productionSourceMap: false,
  filenameHashing: false, // 禁用hash文件命名
  pages: pages.getPages(),
  css: {
    extract: false,
    loaderOptions: {
      postcss: {
        plugins: [
          // require('autoprefixer')(),
          require('postcss-pxtorem')({
            // 假设设计稿750宽;rootValue为37.5，说是对根元素字体大小进行设置.
            rootValue: 37.5, // 换算的基数
            // unitPrecision为5,是转换成rem后保留的小数点位数.
            unitPrecision: 5,
            // selectorBlackList则是一个对css选择器进行过滤的数组，比如你设置为['fs']，那例如fs-xl类名，里面有关px的样式将不被转换这里也支持正则写法。
            selectorBlackList: [], // 忽略转换正则匹配项
            // propList是一个存储哪些将被转换的属性列表，这里设置为['*']全部，假设需要仅对边框进行设置，可以写['*', '!border*']意思是排除带有border的属性.
            propList: ['*'],
            // minPixelValue的选项，我设置了4，意思是所有小于4px的样式都不被转换
            minPixelValue: 4,
          }),
        ],
      },
    },
  },
  configureWebpack: config => {
    if (process.env.NODE_ENV === 'production') {
      // config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
      config.optimization.splitChunks = {
        automaticNameDelimiter: "-",
        cacheGroups: {
          vendors: {
            name: 'chunk-vendors',
            test: /[\\/]node_modules[\\/](vue|core-js)/,
            priority: -10,
            chunks: 'initial',
          },
          common: {
            name: 'chunk-common',
            minChunks: 2,
            priority: -20,
            chunks: 'initial',
            reuseExistingChunk: true
          }
        }
      }
      config.plugins.push( // 开启gzip压缩
        new CompressionWebpackPlugin({
          test: /\.js$|\.html$|\.css$/, // 匹配文件
          threshold: 10240, // 对超过10K的数据进行压缩
          deleteOriginalAssets: false
        })
      );
      // config.plugins.push(
      //   new BundleAnalyzerPlugin()
      // );
      // config.plugins.push(
      //   new vConsolePlugin({
      //     filter: [], // 需要过滤的入口文件
      //     enable: true // 发布代码前记得改回 false
      //   }),
      // )
    } else {
      // config.plugins.push(
      //   new vConsolePlugin({
      //     filter: [], // 需要过滤的入口文件
      //     enable: true // 发布代码前记得改回 false
      //   }),
      // )
    }
  },
};
